10.3 不変式のカプセル化と保守
インスタンスを初期化したあとで不変式を破る手立てはどうするか?
10.3.1 カプセル化とは何か
クラスの作者が呼び出し元に見せるプロパティを選択してデータの読み書きの方法を制限する手法
IMO:カプセル化とは「カプセルにすること」であるとはちょっと違うという印象
TODO 『Clean Architecture』でも述べられていたと思うので参照したい
10.3.2 データアクセス保護
属性のアクセス制御(プロテクトやプライベート)
見えづらくすることで、初期化後も不変式が簡単には破られない
10.3.3 操作、演算
データを操作するメソッド
不変式を維持し続ける
メソッドは2種類
アクセサ
情報を取り出すためのメソッド
ミューテータ
オブジェクトの状態を変更する
不変式!
ミノ駆動本 12章 メソッド(関数)ではコマンド・クエリ・この2つを合わせてミューテータ、ちょっと異なる
不変式を意識しないメソッドはクラスに入れず関数にすべき
クラスに不変式がなければ、関数を並べるようにすべき
続くコラム
@staticmethodは「モジュールレベルで同じスコープに含まれる関数にしたほうが良いのに」
@classmethodよりも関数を使ったほうがロバスト
動かしやすい
サブクラスにおけるオーバーライドを考えなくて済む